﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//using System.Web.Security;
using Film.Common;
using Film.Repository;
using codeding.KMeans.DataStructures;
using codeding.KMeans.DataStructures.Lists;

namespace PhuongDoAn.UC
{
    public partial class register : System.Web.UI.UserControl
    {
        public string Const_Title = "Đăng kí tài khoản";
        private string textpassEmpty = "+_)(*&^%$ad23";

        protected void Page_Load(object sender, EventArgs e)
        {
            int id = 0;
            if (!IsPostBack)
            {
                try
                {
                    txtUserName.Focus();
                    initData();
                    if (Session[ConfigKey.WEB_USER] != null)
                    {

                        tblUserAccount entity = (tblUserAccount)Session[ConfigKey.WEB_USER];
                        hdfId.Value = entity.UserID.ToString();
                        Const_Title = "Thông tin tài khoản";
                        //Hiển thị thông tin chi tiết của người dùng ở đây
                        txtUserName.Text = entity.UserName;
                        txtUserName.ReadOnly = true;
                        txtConfirmPassword.Text = textpassEmpty;
                        txtPass.Text = textpassEmpty;

                        txtEmail.Text = entity.Email;
                        cbAge.SelectedValue = entity.tblUser.AgeID.ToString();
                        cbOccupation.SelectedValue = entity.tblUser.OccupationID.ToString();
                    }
                }
                catch (Exception ex)
                {
                    Page.Response.Write(ex.Message + ": " + ex.StackTrace);
                }

               
            }
        }

        private void initData()
        {
            //Load độ tuổi
            tblAgeRepository ageRepository = new tblAgeRepository();
            List<tblAge> listAge = ageRepository.GetAll();
            cbAge.DataSource = listAge;
            cbAge.DataBind();

            //Load nghề nghiệp
            tblOccupationRepository occupationRepository = new tblOccupationRepository();
            List<tblOccupation> listOccupationRepository = occupationRepository.GetAll();
            cbOccupation.DataSource = listOccupationRepository;
            cbOccupation.DataBind();
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {

                if (txtPass.Text != txtConfirmPassword.Text)
                {
                    lblMessage.Text = "Mật khẩu không khớp, vui lòng xem lại";
                    return;
                }
                tblUserAccountRepository userAccountRepository = new tblUserAccountRepository();
                tblUserAccount userAccount = new tblUserAccount();

                tblUserRepository userRepository = new tblUserRepository();
                tblUser user = new tblUser();

                int uid = 0;
                if (hdfId.Value != "0")
                {
                    uid = int.Parse(hdfId.Value.Trim());
                    userAccount = userAccountRepository.GetByUserId(uid);

                }

                userAccount.Email = txtEmail.Text;
                userAccount.FullName = txtFullName.Text;
                userAccount.IsAdmin = false;
                userAccount.Status = true;

                if (uid == 0)
                {
                    user.AgeID = int.Parse(cbAge.SelectedItem.Value);
                    user.OccupationID = int.Parse(cbOccupation.SelectedItem.Value);
                }
                else
                {
                    user.AgeID = int.Parse(cbAge.SelectedItem.Value);
                    user.OccupationID = int.Parse(cbOccupation.SelectedItem.Value);
                }
                //CheckUserExist
                bool checkUserName = userAccountRepository.CheckUserName(txtUserName.Text, uid);
                if (checkUserName)
                {
                    lblMessage.Text = "Tên đăng nhập phải là duy nhất, vui lòng xem lại";
                    return;
                }

                if (userAccountRepository.CheckEmail(txtEmail.Text, uid))
                {
                    lblMessage.Text = "Email phải là duy nhất, vui lòng xem lại";
                    return;
                }


                if (uid == 0)
                {
                    userAccount.UserID = DanhMucUserAccount.GetMaxID() + 1;
                    userAccount.UserName = txtUserName.Text;
                    userAccount.PassWord = txtPass.Text;// EncryptDecryptUtil.GetMd5Sum(userAccount.UserName + txtPass.Text);
                    userAccount.tblUser = user;
                    userAccountRepository.Add(userAccount);
                    userAccountRepository.SubmitChanges();

                    DanhMucDoiTuong.ReloadAllDanhMuc();

                    lblMessage.Text = "Bạn đã đăng ký thành công, vui lòng đăng nhập";
                    Session[ConfigKey.WEB_USER] = userAccount;
                    //Page.Response.Redirect("Default.aspx?page=rating");

                    Page.Response.Redirect("RatingPage.aspx");
                    pnRegister.Visible = false;

                }
                else
                {
                 //   userAccountRepository.Update(userAccount);
                  //  userRepository.Update(user);
                    userAccountRepository.SubmitChanges();
                    userRepository.SubmitChanges();
                    lblMessage.Text = "Cập nhật thông tin tài khoản thành công";
                    Session[ConfigKey.WEB_USER] = userAccount;
                    pnRegister.Visible = false;
                }




                //CustomerBiz customerBiz = new CustomerBiz();
                //Customer customer = new Customer();

                //if (customerBiz.CheckUserName(txtUserName.Text.Trim(), int.Parse(hdfId.Value)))
                //{
                //    lblMessage.Text = "Tên đăng nhập phải là duy nhất, vui lòng xem lại";
                //    return;
                //}

                //if (hdfId.Value == "0")
                //{
                //    Membership.CreateUser(txtUserName.Text, txtPass.Text, txtEmail.Text);

                //    MembershipUser user = Membership.GetUser(txtUserName.Text);

                //customer.Address = txtAddress.Text;
                //customer.Email = txtEmail.Text;
                //customer.Name = txtFullName.Text;
                //customer.IsNewRegister = true;
                //customer.Mobile = txtMobile.Text;
                //customer.Username = txtUserName.Text;
                //customer.Website = txtWebsite.Text;
                //customer.Yahoo = txtYahoo.Text;
                //customer.RegisterDate = DateTime.Now;
                //customer.IsActive = true;
                //customerBiz.Add(customer);

                //    lblMessage.Text = "Bạn đã đăng ký thành công, vui lòng đăng nhập";
                //    pnRegister.Visible = false;

                //    txtAddress.Text = "";
                //    txtConfirmPassword.Text = "";
                //    txtFullName.Text = "";
                //    txtMobile.Text = "";
                //    txtPass.Text = "";
                //    txtWebsite.Text = "";
                //    txtYahoo.Text = "";
                //    txtEmail.Text = "'";
                //    txtPass.Text = "";
                //    txtConfirmPassword.Text = "";
                //    txtUserName.Text = "";
                //}
                //else
                //{

                //customer = customerBiz.Get(int.Parse(hdfId.Value));
                //if (customer != null)
                //{
                //    MembershipUser user = Membership.GetUser(ltToken.Text);
                //    string newPass = user.ResetPassword();
                //    user.ChangePassword(newPass, txtPass.Text);
                //    Membership.UpdateUser(user);

                //    customer.Address = txtAddress.Text;
                //    customer.Email = txtEmail.Text;
                //    customer.Name = txtFullName.Text;
                //    customer.IsNewRegister = true;
                //    customer.Mobile = txtMobile.Text;
                //    customer.Username = txtUserName.Text;

                //    //Kiểm tra sự cố trùng username

                //    customer.Website = txtWebsite.Text;
                //    customer.Yahoo = txtYahoo.Text;
                //    customer.RegisterDate = DateTime.Now;
                //    customerBiz.Save();
                //}

                // }



            }
            catch (Exception ex)
            {
                lblMessage.Text = ex.Message + " : " + ex.StackTrace;
            }
            //catch (MembershipCreateUserException ex)
            //{
            //    pnRegister.Visible = true;
            //    if (ex.StatusCode == MembershipCreateStatus.DuplicateEmail)
            //    {
            //        lblMessage.Text = "Địa chỉ email này đã tồn tại trong hệ thống, vui lòng đăng ký với tài khoản email khác!";
            //        return;
            //    }

            //    if (ex.StatusCode == MembershipCreateStatus.InvalidEmail)
            //    {
            //        lblMessage.Text = "Địa chỉ email này không hợp lệ, vui lòng điền vào địa chỉ email hợp lệ!";
            //        return;
            //    }

            //    if (ex.StatusCode == MembershipCreateStatus.DuplicateUserName)
            //    {
            //        lblMessage.Text = "Tên đăng nhập đã được dùng, vui lòng chọn tên đăng nhập khác!";
            //        return;
            //    }

            //    if (ex.StatusCode == MembershipCreateStatus.InvalidPassword)
            //    {
            //        lblMessage.Text = "Mật khẩu không hợp lệ, mật khẩu của bạn quá đơn giản!";
            //        return;
            //    }
            //    lblMessage.Text = "Lỗi trong quá trình tạo tài khoản!";

            //}

        }

        protected void btnCancel_Click(object sender, EventArgs e)
        {
            Page.Response.Redirect("Default.aspx");
        }
    }
}